package com.afish.syl.lib.api.component.controller.widget;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.widget.GridView;

import com.afish.syl.lib.R;


/**
 * 带有边框的gridView
 * 
 * @author hjixiang@linewell.com
 * @sine 2014-11-19
 */
public class LineGridView extends GridView{
	/**
	 * 构造方法
	 * @param context
	 */
	public LineGridView(Context context) {
		super(context);
	}
	/**
	 * 构造方法
	 * @param context
	 * @param attrs
	 * @param defStyle
	 */
	public LineGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}
	/**
	 * 构造方法
	 * @param context
	 * @param attrs
	 */
	public LineGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	@Override
	protected void dispatchDraw(Canvas canvas) {
		super.dispatchDraw(canvas);
		View localView1 = getChildAt(0);
		int column = getWidth() / localView1.getWidth();
		int childCount = getChildCount();
		Paint localPaint = new Paint();
		localPaint.setStyle(Paint.Style.STROKE);
		// 边框线的颜色
		localPaint.setColor(getContext().getResources().getColor(R.color.gray_fgx));
		// 判断画线
		for(int i = 0;i < childCount;i++){
			View cellView = getChildAt(i);
			if((i + 1) % column == 0){
				canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
			} else if((i + 1) > (childCount - (childCount % column))) {
				canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
			} else{ 
				canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
				canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
			}
		}
		if(childCount % column != 0){
			for(int j = 0 ;j < (column-childCount % column) ; j++){
				View lastView = getChildAt(childCount - 1);
				canvas.drawLine(lastView.getRight() + lastView.getWidth() * j, lastView.getTop(), lastView.getRight() + lastView.getWidth()* j, lastView.getBottom(), localPaint);
			}
		}
	}
	
}
